
import { LoginAPI } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { getUserInfoAPI, getMoreInfoAPI } from '@/api/user'
// import { resetRouter } from '@/router'


const state = {
  token: getToken() || null,
  // 用户信息
  userInfo: null
}

const mutations = {
  // 设置state 的token
  setToken(state, payload) {
    state.token = payload.token
  },
  setUserInfo(state, payload) {
    state.userInfo = payload
  }
}

const actions = {
  // 将login页面的请求封装在这里, 将token保存到vuex 和 cookie中
  async setTokenActions(context, payload) {
    // 发送请求, 响应拦截器中直接返回的 token
    const data = await LoginAPI(payload.loginForm)
    // 将token保存到cookie中
    setToken(data)
    // 调用 mutations 配置项中的函数，设置state中的token
    context.commit('setToken', { token: data })
  },

  // 请求用户信息
  async setUserInfoActions(context) {
    console.log('执行了');
    const res = await getUserInfoAPI();
    const id = res.userId
    // 获取用户头像等信息
    const res2 = await getMoreInfoAPI(id)
    // 将请求的用户信息与用户头像信息都保存到vuex
    context.commit('setUserInfo', { ...res, ...res2 })
  },

  // 退出登录
  logOutActions(context) {
    // 清除cookie缓存
    removeToken()
    // 清除vux的token
    context.commit('setToken', { token: null })
    // 清除用户信息
    context.commit('setUserInfo', null)
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

